{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Decomposition method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Method definition copyto!(Array{Float64, 1}, AutomotiveDrivingModels.LatLonAccel) in module AutomotiveDrivingModels at /mnt/c/Users/Maxime/wsl/.julia/v0.6/AutomotiveDrivingModels/src/2d/actions/lat_lon_accel.jl:13 overwritten in module AutoUrban at /mnt/c/Users/Maxime/wsl/.julia/v0.6/AutoUrban/src/simulation/actions.jl:10.\n"
     ]
    }
   ],
   "source": [
    "include(\"AutomotivePOMDPs.jl\")\n",
    "using AutomotivePOMDPs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Method definition info(Any...) in module Base at util.jl:532 overwritten in module Logging at /mnt/c/Users/Maxime/wsl/.julia/v0.6/Logging/src/Logging.jl:115.\n",
      "WARNING: Method definition warn(Any...) in module Base at util.jl:585 overwritten in module Logging at /mnt/c/Users/Maxime/wsl/.julia/v0.6/Logging/src/Logging.jl:115.\n",
      "\u001b[1m\u001b[33mWARNING: \u001b[39m\u001b[22m\u001b[33mLoading a new version of TensorFlow.jl for the first time. This initial load can take around 5 minutes as code is precompiled; subsequent usage will only take a few seconds.\u001b[39m\n",
      "WARNING: Method definition info(Any...) in module Base at util.jl:532 overwritten in module Logging at /mnt/c/Users/Maxime/wsl/.julia/v0.6/Logging/src/Logging.jl:115.\n",
      "WARNING: Method definition warn(Any...) in module Base at util.jl:585 overwritten in module Logging at /mnt/c/Users/Maxime/wsl/.julia/v0.6/Logging/src/Logging.jl:115.\n",
      "WARNING: Method definition (::TensorFlow.nn.rnn_cell.LSTMCell{T})(Any, Any) in module rnn_cell at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/rnn_cell.jl:146 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:246.\n",
      "WARNING: Method definition (::TensorFlow.nn.rnn_cell.LSTMCell{T})(Any, Any, Any) in module rnn_cell at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/rnn_cell.jl:146 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:246.\n",
      "WARNING: Method definition rnn(Any, Array{T, 1} where T) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:64 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:279.\n",
      "WARNING: Method definition rnn(Any, Array{T, 1} where T, Any) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:64 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:279.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, Array{T, 1} where T) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, Array{T, 1} where T, Any) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition rnn(Any, TensorFlow.Tensor{T} where T) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:86 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:303.\n",
      "WARNING: Method definition rnn(Any, TensorFlow.Tensor{T} where T, Any) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:86 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:303.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, TensorFlow.Tensor{T} where T) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, TensorFlow.Tensor{T} where T, Any) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition rnn(Any, Array{T, 1} where T) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:64 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:279.\n",
      "WARNING: Method definition rnn(Any, TensorFlow.Tensor{T} where T) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:86 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:303.\n",
      "WARNING: Method definition rnn(Any, Array{T, 1} where T, Any) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:64 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:279.\n",
      "WARNING: Method definition rnn(Any, TensorFlow.Tensor{T} where T, Any) in module nn at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/nn.jl:86 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:303.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, Array{T, 1} where T) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, TensorFlow.Tensor{T} where T) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, Array{T, 1} where T, Any) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition #rnn(Array{Any, 1}, typeof(TensorFlow.nn.rnn), Any, TensorFlow.Tensor{T} where T, Any) in module nn overwritten in module DeepQLearning.\n",
      "WARNING: Method definition (::TensorFlow.nn.rnn_cell.LSTMCell{T})(Any, Any) in module rnn_cell at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/rnn_cell.jl:146 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:246.\n",
      "WARNING: Method definition (::TensorFlow.nn.rnn_cell.LSTMCell{T})(Any, Any, Any) in module rnn_cell at /mnt/c/Users/Maxime/wsl/.julia/v0.6/TensorFlow/src/ops/rnn_cell.jl:146 overwritten in module DeepQLearning at /mnt/c/Users/Maxime/wsl/.julia/v0.6/DeepQLearning/src/tf_helpers.jl:246.\n"
     ]
    }
   ],
   "source": [
    "using POMDPs, StatsBase, POMDPToolbox, RLInterface, Parameters, GridInterpolations, DeepQLearning\n",
    "using AutomotiveDrivingModels,AutoViz\n",
    "using Reel "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = MersenneTwister(1);\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Initialize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AutomotivePOMDPs.UrbanPOMDP\n",
       "  env: AutomotivePOMDPs.UrbanEnv\n",
       "  obs_dist: AutomotivePOMDPs.ObstacleDistribution\n",
       "  sensor: AutomotiveDrivingModels.LidarSensor\n",
       "  models: Dict{Int64,AutomotiveDrivingModels.DriverModel}\n",
       "  ego_type: AutomotiveDrivingModels.VehicleDef\n",
       "  car_type: AutomotiveDrivingModels.VehicleDef\n",
       "  ped_type: AutomotiveDrivingModels.VehicleDef\n",
       "  max_cars: Int64 5\n",
       "  max_peds: Int64 0\n",
       "  obstacles: Bool true\n",
       "  max_acc: Float64 2.0\n",
       "  ego_start: Float64 17.0\n",
       "  ego_goal: AutomotiveDrivingModels.LaneTag\n",
       "  off_grid: Vec.VecSE2{Float64}\n",
       "  ΔT: Float64 0.5\n",
       "  car_birth: Float64 0.3\n",
       "  ped_birth: Float64 0.9\n",
       "  a_noise: Float64 1.0\n",
       "  v_noise: Float64 1.0\n",
       "  pos_obs_noise: Float64 0.5\n",
       "  vel_obs_noise: Float64 0.5\n",
       "  collision_cost: Float64 -1.0\n",
       "  action_cost: Float64 0.0\n",
       "  goal_reward: Float64 1.0\n",
       "  γ: Float64 0.95\n"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params = UrbanParams()\n",
    "env = UrbanEnv(params=params)\n",
    "obs_dist = ObstacleDistribution(env)\n",
    "pomdp = UrbanPOMDP(env=env, obs_dist=obs_dist, max_peds=0, max_cars=5,obstacles=true, ped_birth=0.9)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load Policies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "obsped_policy = DeepQLearning.restore(problem_file = \"../maximeworkspace/urban_drqn/obsped6/problem.jld\", weights_file = \"../maximeworkspace/urban_drqn/obsped6/weights.jld\")\n",
    "\n",
    "obscar_policy = DeepQLearning.restore(problem_file = \"../maximeworkspace/urban_drqn/obscar6/problem.jld\", weights_file = \"../maximeworkspace/urban_drqn/obscar6/weights.jld\")\n",
    "pedcar_policy = DeepQLearning.restore(problem_file = \"../maximeworkspace/urban_drqn/pedcar6/problem.jld\", weights_file = \"../maximeworkspace/urban_drqn/pedcar6/weights.jld\")\n",
    "twocars_policy = DeepQLearning.restore(problem_file = \"../maximeworkspace/urban_drqn/twocars6/problem.jld\", weights_file = \"../maximeworkspace/urban_drqn/twocars6/weights.jld\")\n",
    ";"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "policy_map = Dict(:obsped=>obsped_policy,\n",
    "                  :obscar=>obscar_policy,\n",
    "                  :pedcar=>pedcar_policy,\n",
    "                  :twocars=>twocars_policy\n",
    "    )\n",
    "problem_map = Dict(:obsped=>ObsPed,\n",
    "                   :obscar=>ObsCar,\n",
    "                   :pedcar=>PedCar,\n",
    "                   :twocars=>TwoCars)\n",
    ";"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(::#73) (generic function with 1 method)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function fusion_min(x)\n",
    "    return minimum(hcat(x), 2)\n",
    "end\n",
    "MIN = x -> minimum(vcat(x...), 1)\n",
    "SUM = x -> sum(vcat(x...), 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "dec_policy = DecomposedPolicy(pomdp, problem_map, policy_map, MIN, actions(pomdp));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "reset_dec_policy! (generic function with 1 method)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function reset_dec_policy!(policy::DecomposedPolicy)\n",
    "    for (prob_key, sub_policy) in policy.policy_map\n",
    "        DeepQLearning.reset_hidden_state!(sub_policy)\n",
    "    end\n",
    "end\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set up the k-Markov updater"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "up = KMarkovDecUpdater(KMarkovUpdater(4), pomdp);\n",
    "up = PreviousObsDecUpdater(PreviousObservationUpdater{Vector{Float64}}(), pomdp);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "# include(\"decomposition/rendering.jl\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "06-Apr 09:01:21:WARNING:root:The initialstate argument for HistoryRecorder is deprecated. The initial state should be specified as the last argument to simulate(...).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  0.496840 seconds (1.15 M allocations: 61.366 MiB, 23.46% gc time)\n",
      "18\n"
     ]
    }
   ],
   "source": [
    "reset_dec_policy!(dec_policy)\n",
    "s0 = initialstate(pomdp, rng, 1)\n",
    "b0 = initialize_dec_belief(up, pomdp, s0, rng);\n",
    "hr = HistoryRecorder(rng=rng, initialstate = s0, max_steps=100);\n",
    "@time hist = simulate(hr, pomdp, dec_policy, up, b0);\n",
    "println(length(hist.state_hist))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<video autoplay controls><source src=\"files/reel-5312890771224781922.webm?7512001305509500345\" type=\"video/webm\"></video>"
      ],
      "text/plain": [
       "Reel.Frames{MIME{Symbol(\"image/png\")}}(\"/tmp/tmpZ16g5j\", 0x0000000000000012, 4.0, nothing)"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "push!(hist.action_hist, UrbanAction(0.))\n",
    "action_hist = [a.acc for a in hist.action_hist]\n",
    "duration, fps, render_hist = animate_scenes(hist.state_hist,\n",
    "                                            action_hist,\n",
    "                                            hist.belief_hist,\n",
    "                                            dec_policy,\n",
    "                                            pomdp.env, \n",
    "                                            overlays = SceneOverlay[IDOverlay()], \n",
    "                                            sim_dt=pomdp.ΔT, \n",
    "                                            cam=StaticCamera(VecE2(0.,-10.), 14.))\n",
    "speed_factor = 2.\n",
    "film = roll(render_hist, fps = speed_factor*fps, duration = duration/speed_factor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Cairo.CairoSurface{UInt32}(Ptr{Void} @0x000000000c11e170, 1000.0, 600.0, #undef)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scene = obs_to_scene(pomdp, hist.observation_hist[1])\n",
    "AutoViz.render(scene, pomdp.env, cam=FitToContentCamera(0.))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56-element Array{Float64,1}:\n",
       "  0.0625    \n",
       " -0.541667  \n",
       "  1.0       \n",
       "  0.0       \n",
       " -1.16667   \n",
       " -1.2125    \n",
       "  0.0       \n",
       "  0.0       \n",
       " -1.16667   \n",
       " -1.2125    \n",
       "  0.0       \n",
       "  0.0       \n",
       " -0.00673437\n",
       "  ⋮         \n",
       "  0.0833333 \n",
       "  0.0833333 \n",
       "  0.0       \n",
       "  0.291667  \n",
       "  0.520833  \n",
       "  0.375     \n",
       " -0.729167  \n",
       " -0.4375    \n",
       "  0.260417  \n",
       "  0.375     \n",
       "  0.729167  \n",
       " -0.4375    "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "o = generate_o(pomdp, s0, rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " -1.16667\n",
       " -1.21667\n",
       "  0.0    "
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_ego_dist = get_end(pomdp.env.roadway[pomdp.ego_goal])\n",
    "[-28, -29.2,0]/24"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "indices:53, 56\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       "   6.25   \n",
       "   9.0    \n",
       "   2.29074\n",
       " -10.5    "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "i = 14\n",
    "println(\"indices:\", 4*(i-1)+1, \", \", 4*i)\n",
    "o[4*(i-1)+1:4*i].*[24,24,pi,24]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Array{Float64,1}} with 5 entries:\n",
       "  \"car5\" => [-0.439306, -0.0583882, 0.0, 0.0713542]\n",
       "  \"car3\" => [0.0563329, -1.13056, 0.5, 0.285223]\n",
       "  \"car4\" => [-0.373311, 0.190576, 1.0, 0.81172]\n",
       "  \"car1\" => [-1.16667, -1.2125, 0.0, 0.0]\n",
       "  \"car2\" => [-1.16667, -1.2125, 0.0, 0.0]"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "car_map"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Array{Float64,1}} with 5 entries:\n",
       "  \"ped5\" => [-0.0486111, -0.0505208, 0.0, 0.0]\n",
       "  \"ped4\" => [-0.193091, 0.175828, 0.5, 0.137288]\n",
       "  \"ped2\" => [0.280848, 0.379227, 0.5, 0.0890329]\n",
       "  \"ped1\" => [0.242414, 0.0919097, 1.5, -0.0349959]\n",
       "  \"ped3\" => [-1.16667, -1.2125, 0.0, 0.0]"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ped_map"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.0254089, -0.270342, 1.0, 0.276159]\n",
      "[0.297894, -0.336779, 1.0, 0.0108812]\n",
      "[-0.401636, -0.352222, 1.0, 0.0398652]\n",
      "[-1.16667, -1.2125, 0.0, 0.0]\n",
      "[-0.304574, -0.171806, 0.5, 0.212961]\n"
     ]
    }
   ],
   "source": [
    "scene = Scene()\n",
    "feature_vec = nothing\n",
    "ego, car_map, ped_map, obs_map = AutomotivePOMDPs.split_o(hist.observation_hist[1], pomdp)\n",
    "for (ped, ped_state) in ped_map\n",
    "    println(ped_state)\n",
    "    obs_states = []\n",
    "    for (obs, obs_state) in obs_map\n",
    "        push!(obs_states, obs_state)\n",
    "\n",
    "    end\n",
    "    feature_vec = vcat(ego, ped_state, obs_states...)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       "  0.0254089\n",
       " -0.270342 \n",
       "  1.0      \n",
       "  0.0761588"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hist.observation_hist[1][(1+pomdp.max_cars)*4+1:(1+pomdp.max_cars)*4+4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20-element Array{Float64,1}:\n",
       "  0.0625   \n",
       " -0.541667 \n",
       "  1.0      \n",
       "  0.0      \n",
       "  0.205779 \n",
       "  0.261298 \n",
       "  1.5      \n",
       "  0.023842 \n",
       "  0.520833 \n",
       "  0.375    \n",
       " -0.729167 \n",
       " -0.4375   \n",
       "  0.0833333\n",
       "  0.0833333\n",
       "  0.0      \n",
       "  0.291667 \n",
       "  0.260417 \n",
       "  0.375    \n",
       "  0.729167 \n",
       " -0.4375   "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hist.belief_hist[1][2][2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Cairo.CairoSurface{UInt32}(Ptr{Void} @0x0000000013d205c0, 1000.0, 600.0, #undef)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1 = obs_to_scene(ObsPed, hist.belief_hist[1][2][2])\n",
    "AutoViz.render(s1, pomdp.env, cam=FitToContentCamera(0.))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "2 methods for generic function <b>obs_to_scene</b>:<ul><li> obs_to_scene(pomdp::<b>AutomotivePOMDPs.UrbanPOMDP</b>, obs::<b>Array{Float64,1}</b>) at <a href=\"https://github.com/sisl/AutomotivePOMDPs/tree/1d845f88196a0d9d6ff752bf408fc5a2c06a6204//urban/generative_model.jl#L508\" target=\"_blank\">/mnt/c/Users/Maxime/OneDrive - Leland Stanford Junior University/Research/AutomotivePOMDPs/urban/generative_model.jl:508</a></li> <li> obs_to_scene(pomdp::<b>AutomotivePOMDPs.OIPOMDP</b>, o::<b>Array{Float64,1}</b>) at <a href=\"https://github.com/sisl/AutomotivePOMDPs/tree/1d845f88196a0d9d6ff752bf408fc5a2c06a6204//multi_lane_T_intersection/generative_model.jl#L271\" target=\"_blank\">/mnt/c/Users/Maxime/OneDrive - Leland Stanford Junior University/Research/AutomotivePOMDPs/multi_lane_T_intersection/generative_model.jl:271</a></li> </ul>"
      ],
      "text/plain": [
       "# 2 methods for generic function \"obs_to_scene\":\n",
       "obs_to_scene(pomdp::AutomotivePOMDPs.UrbanPOMDP, obs::Array{Float64,1}) in AutomotivePOMDPs at /mnt/c/Users/Maxime/OneDrive - Leland Stanford Junior University/Research/AutomotivePOMDPs/urban/generative_model.jl:508\n",
       "obs_to_scene(pomdp::AutomotivePOMDPs.OIPOMDP, o::Array{Float64,1}) in AutomotivePOMDPs at /mnt/c/Users/Maxime/OneDrive - Leland Stanford Junior University/Research/AutomotivePOMDPs/multi_lane_T_intersection/generative_model.jl:271"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "methods(obs_to_scene)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Method definition animate_scenes(Array{Records.Frame{Records.Entity{AutomotiveDrivingModels.VehicleState, AutomotiveDrivingModels.VehicleDef, Int64}}, 1}, Array{Float64, 1}, Any) in module AutomotivePOMDPs at /mnt/c/Users/Maxime/OneDrive - Leland Stanford Junior University/Research/AutomotivePOMDPs/utils/rendering.jl:49 overwritten in module Main at In[15]:7.\n",
      "WARNING: Method definition #animate_scenes(Array{Any, 1}, typeof(AutomotivePOMDPs.animate_scenes), Array{Records.Frame{Records.Entity{AutomotiveDrivingModels.VehicleState, AutomotiveDrivingModels.VehicleDef, Int64}}, 1}, Array{Float64, 1}, Any) in module AutomotivePOMDPs overwritten in module Main.\n"
     ]
    }
   ],
   "source": [
    "function AutomotivePOMDPs.animate_scenes(scenes::Vector{Scene},\n",
    "                        actions::Vector{Float64},\n",
    "                        env;\n",
    "                        overlays::Vector{SceneOverlay} = SceneOverlay[],\n",
    "                        cam=FitToContentCamera(0.),\n",
    "                        sim_dt=0.1)\n",
    "    duration =length(scenes)*sim_dt\n",
    "    fps = Int(1/sim_dt)\n",
    "    cam = FitToContentCamera(0.)\n",
    "    function render_rec(t, dt)\n",
    "        frame_index = Int(floor(t/dt)) + 1\n",
    "        return AutoViz.render(scenes[frame_index], \n",
    "                              env,\n",
    "                              cat(1, overlays, TextOverlay(text = [\"Acc: $(actions[frame_index])\"])),\n",
    "                              cam=cam,\n",
    "                              car_colors=get_colors(scenes[frame_index]))\n",
    "    end\n",
    "    return duration, fps, render_rec\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Cairo.CairoSurface{UInt32}(Ptr{Void} @0x000000000af0dc90, 1000.0, 600.0, #undef)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "AutoViz.render(s, env, cam=FitToContentCamera(),[IDOverlay()], car_colors=get_colors(s))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.6.1",
   "language": "julia",
   "name": "julia-0.6"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
